package biblio.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import enumeration.EnumStatusExemplaire;
import Classe_table.Exemplaire;
import Classe_table.Livre;

public class ExemplairesDAO {

	Connection cnx1 = null;
	
public ExemplairesDAO(Connection cnx1) {
		this.cnx1=cnx1;
	}

public Exemplaire findByKey(int idExemplaire) throws SQLException
{
	Statement stmt1 = cnx1.createStatement();
	ResultSet rs2 = stmt1.executeQuery("select IDEXEMPLAIRE,DATEACHAT,STATUS,ISBN FROM exemplaire where idexemplaire = "+idExemplaire);			
	Exemplaire ex=null;
	
	while( rs2.next())
	{
		int idexemplaire = rs2.getInt(1);
		String status = rs2.getString(3);
		Date dateachat=rs2.getDate(2);
		EnumStatusExemplaire enstex = EnumStatusExemplaire.valueOf(status);
		String ISBN=rs2.getString(4); // Lazy-loading
		ex = new Exemplaire(idexemplaire,dateachat,enstex,ISBN);//mapping Objet Relationel
		
	}
	return ex;
		
}
	
public ArrayList<Exemplaire> findall() throws SQLException
{
	Statement stmt1 = cnx1.createStatement();
	ArrayList <Exemplaire> listeExemplaire= new ArrayList<Exemplaire>();
	ResultSet rs3 = stmt1.executeQuery("select * FROM exemplaire");			
	while( rs3.next()){
		
		int idexemplaire = rs3.getInt(1);
		Date dateachat=rs3.getDate(2);
		
		String status = rs3.getString(3);
		EnumStatusExemplaire enstex = EnumStatusExemplaire.valueOf(status);
		
		//System.out.println("ID Exemplaire : " + idexemplaire +" Status : "+ status );
		//Livre livre=new Livre();
		Exemplaire ex = new Exemplaire(idexemplaire,dateachat,enstex,null);//mapping Objet Relationel
		listeExemplaire.add(ex);
		
	}
	
	return listeExemplaire;
}
	public void updateexemplaire(Exemplaire exemple) throws SQLException
	{
		String cmd_sql ="UPDATE EXEMPLAIRE SET IDEXEMPLAIRE=?,DATEACHAT=?,STATUS=?,ISBN=? "
				+ "WHERE IDEXEMPLAIRE=?";
		PreparedStatement pstmt = cnx1.prepareStatement(cmd_sql);
		pstmt.setInt(1, exemple.getIdExemplaire());
		pstmt.setDate(2, new java.sql.Date(exemple.getDateAchat().getTime()));
		pstmt.setString(3, exemple.getstatus().toString());
		pstmt.setString(4, exemple.getIsbn());
		pstmt.setInt(5, exemple.getIdExemplaire());
		pstmt.execute ();
		
	}
}
